Fix workflow catalog table and revise documentation - #3
Merged
Conversation
dgruano
commented
Aug 18, 2026
dgruano
commented
Aug 18, 2026
dgruano
marked this pull request as ready for review
August 18, 2026 17:19
Updated section titles for consistency across examples, changing 'test' to 'example' for clarity
Sergio-ote
approved these changes
Aug 18, 2026
Sergio-ote
left a comment
Collaborator
There was a problem hiding this comment.
Great additions and corrections @dgruano, we seem to be ready for a new merge to main!
|
|
||
| !!! note "Snakemake-catalog page" | ||
| The full, always-updated table of every parameter (type, default, required) is generated automatically from the schema and shown on the workflow's Snakemake-catalog page. | ||
| The full, always-updated table of every parameter (type, default, required) is generated automatically from the schema and shown on the workflow's [Snakemake-catalog page](https://snakemake.github.io/snakemake-workflow-catalog/docs/workflows/cbib/SpaceBlocks.html#workflow-parameters). |
Collaborator
There was a problem hiding this comment.
Suggested change
| The full, always-updated table of every parameter (type, default, required) is generated automatically from the schema and shown on the workflow's [Snakemake-catalog page](https://snakemake.github.io/snakemake-workflow-catalog/docs/workflows/cbib/SpaceBlocks.html#workflow-parameters). | |
| The full, always-updated table of every parameter (type, default, required) is generated automatically from the schema and shown on the workflow's [Snakemake-catalog page](https://snakemake.github.io/snakemake-workflow-catalog/docs/workflows/cbib/SpaceBlocks.html). |
| - **`qc_sweep` rule is diagnostic only** — it never filters, clusters, or writes an h5ad. | ||
| - **External annotation takes over.** When enabled, it becomes the primary annotation everywhere. The [Configuration](configuration.md) allows flexibility to retain all cells or remove externally unannotated ones. | ||
| - **Config-driven colours** — regions, sample metadata, and cell types, applied consistently across every plot, with a grey fallback for undefined levels. This allows precise and consitent color representations through the analyses. | ||
| - **Config-driven colours** — regions, sample metadata, and cell types are applied consistently across every plot, with a grey fallback for undefined levels. This allows precise and consistent colour representations throughout the analyses. |
Collaborator
There was a problem hiding this comment.
Suggested change
| - **Config-driven colours** — regions, sample metadata, and cell types are applied consistently across every plot, with a grey fallback for undefined levels. This allows precise and consistent colour representations throughout the analyses. | |
| - **Config-driven colours** — regions, sample metadata, and cell type colours are applied consistently across every plot, with a grey fallback for undefined levels. This allows precise and consistent colour representations throughout the analyses. |
| SpaceBlocks lets you overlay manual **region annotations** (tumour, healthy, necrosis, …) onto your samples. You draw them once in [QuPath](https://qupath.github.io/), export them as GeoJSON, and the pipeline folds them into `obs["region_annotation"]`. | ||
|
|
||
| This is an **optional but recommended step** (without it every cell is `Unlabeled`) because it unlocks the region-aware analyses (neighbourhood, per-region co-occurrence, region-level pseudobulk). | ||
| This is an **optional but recommended step** because it unlocks the region-aware analyses (neighbourhood, per-region co-occurrence, region-level pseudobulk). Without it, every cell will be `Unlabeled`. |
Collaborator
There was a problem hiding this comment.
Suggested change
| This is an **optional but recommended step** because it unlocks the region-aware analyses (neighbourhood, per-region co-occurrence, region-level pseudobulk). Without it, every cell will be `Unlabeled`. | |
| This is an **optional but recommended step** because it unlocks the region-aware analyses (neighbourhood, per-region co-occurrence, region-level pseudobulk). **Without it, every cell will be classified as `Unlabeled`**. |
| | Mode | How to obtain the image | | ||
| | --- | --- | | ||
| | `visiumhd` / `xenium5k` (a Headblock runs) | `snakemake qupath_images` writes one image per sample under `Samples/{sample}/QuPath_image/` (a hires PNG for Visium HD, a morphology TIFF for Xenium 5K). | | ||
| | `visiumhd` / `xenium5k` (a Headblock runs) | `snakemake qupath_images` writes one image per sample under `Samples/{sample}/QuPath_image/` (a Hi-Res PNG for Visium HD, a morphology TIFF for Xenium 5K). | |
Collaborator
There was a problem hiding this comment.
Suggested change
| | `visiumhd` / `xenium5k` (a Headblock runs) | `snakemake qupath_images` writes one image per sample under `Samples/{sample}/QuPath_image/` (a Hi-Res PNG for Visium HD, a morphology TIFF for Xenium 5K). | | |
| | `visiumhd` / `xenium5k` (a Headblock runs) | `snakemake qupath_images` writes one image per sample under `Samples/{sample}/QuPath_image/` (a high resolution PNG for Visium HD, a morphology TIFF for Xenium 5K). | |
| ## Resources & retries | ||
|
|
||
| No rule uses `localrule`, so nothing runs on the scheduler's head node. | ||
| No rule uses `localrule`, so nothing runs on the scheduler's head node as long as the selected profile has configured remote execution (e.g. see `profiles/slurm`) |
Collaborator
There was a problem hiding this comment.
Suggested change
| No rule uses `localrule`, so nothing runs on the scheduler's head node as long as the selected profile has configured remote execution (e.g. see `profiles/slurm`) | |
| No rule uses `localrule`. This is particularly important when the Snakemake profile is configured for remote execution (e.g. see `profiles/slurm`), so nothing runs on the scheduler's head node. |
|
|
||
| Every compute rule draws `mem_mb` / `runtime` / `threads` from `config["resources"]` (with a `default` fallback). | ||
|
|
||
| Memory is wrapped so it **grows with the retry attempt** (`mem_mb = base × attempt`); combined with `retries: 3` in the SLURM profile, an OOM-killed job is automatically resubmitted with more RAM. |
Collaborator
There was a problem hiding this comment.
Suggested change
| Memory is wrapped so it **grows with the retry attempt** (`mem_mb = base × attempt`); combined with `retries: 3` in the SLURM profile, an OOM-killed job is automatically resubmitted with more RAM. | |
| !!! warning "Job retry triggers" | |
| Retries are triggered by any job failure, not specifically out-of-memory errors, so jobs failing for other reasons will also be resubmitted with increased memory. |
| ``` | ||
|
|
||
| ## Visium HD example (mouse brain) | ||
| [comment]: <Of the four examples, two are called examples and two other are called tests. Two add the name "HeadBlock" but two other don't. We should change this for consistency> |
Collaborator
There was a problem hiding this comment.
Suggested change
| [comment]: <Of the four examples, two are called examples and two other are called tests. Two add the name "HeadBlock" but two other don't. We should change this for consistency> |
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The Snakemake workflow catalog automatically parses the
config.schema.yamlto build a parameter table. However, our current release breaks the table in the middle:This happens right after the description field of atera parameters. Indeed, the problem is caused by the block chomping indicator (i.e. the little
>before the long, multiline description). Starting the description with>leaves a trailing newline character that is parsed by snakemake inside the table, which breaks the formatting. Instead,>-should fix the parsing. We won't know for sure until we merge to main and release to the catalog, but should work.Otherwise, I also include small doc changes that fix typos or improve readability. Feel free to chip in.
Opening as a stacked PR onto #2 and leaving it as a draft for now, as I may add new modifications
Validation
mkdocs build --strictpasses, if documentation was changed